/*
 * Consulta.h
 *
 *  Created on: 20/05/2012
 *      Author: Shazgath
 */

#ifndef CONSULTA_H_
#define CONSULTA_H_

#include <list>
#include "common.h"
#include "Atributoconsulta.h"

//  clase que contiene una consulta hecha por el cliente

class Consulta {
public:
	Consulta();
	Consulta(unsigned int id_cliente, unsigned int n_tabla, unsigned int n_consulta);
	virtual ~Consulta();
	std::string serializar();
	std::string serializarParaServidor();
	void insertarAtributo(Atributo_consulta* a);
	void hidratar(std::string s);
	std::list<Atributo_consulta*> getAtributos();		//  obtiene todos los atributos en una lista
	unsigned int getNTabla();
	void setId(int id);
	unsigned int getId();
	unsigned int getIdConsulta();
	bool esConsultaColumna();
	Atributo_consulta* getAtributo(int pos);
private:
	unsigned int id_cliente;		//  identificacion del cliente, le sirve a la cola de respuestas
	unsigned int n_tabla;		//  tabla a la que corresponde la consulta
	unsigned int id_consulta;		//  identificador de la consulta dentro de cada cliente
	std::list<Atributo_consulta*> atributos;		//  Elementos de la consulta (inputs)
};

#endif /* CONSULTA_H_ */
